//表格控件
var xx_table = function () {
	var tableInit = new Object();
	//初始化Table
	tableInit.Init = function (tableName, queryUrl, columns, detailView, objId, searchTips) {
		$('#'+tableName).bootstrapTable({
			url: queryUrl, //请求后台的URL（*）
			method: 'get', //请求方式（*）
			dataType: "json", 
			toolbar: '#toolbar', //工具按钮用哪个容器
			striped: true, //是否显示行间隔色
			cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination: true, //是否显示分页（*）
			sortable: true, //是否启用排序
			sortOrder: "asc", //排序方式
			queryParams: tableInit.queryParams,//传递参数（*）
			sidePagination: "server", //分页方式：client客户端分页，server服务端分页（*）
			pageNumber:1, //初始化加载第一页，默认第一页
			pageSize: 10, //每页的记录行数（*）
			pageList: [10, 15, 20, 25, 30], //可供选择的每页的行数（*）
			search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch: true,
			showColumns: true, //是否显示所有的列
			showRefresh: true, //是否显示刷新按钮
			minimumCountColumns: 2, //最少允许的列数
			clickToSelect: true, //是否启用点击选中行
			height: 530, //行高，如果没有设置height属性，表格自动根据记录条数决定表格高度
			uniqueId: objId, //每一行的唯一标识，一般为主键列
			showToggle:false, //是否显示详细视图和列表视图的切换按钮
			cardView: false, //是否显示详细视图
			detailView: detailView, //是否显示父子表
			showExport: true, 
			exportDataType: "basic",
			//无数据显示
			formatNoMatches: function() {
				return '暂无数据！';
			},
			//搜索框提示
			formatSearch: function() {
				return searchTips;
			},
			//处理返回结果
			responseHandler: function(response){
				return { rows: response.result.results, total: response.result.total }
			},
			columns: columns
		});
	};
	
	//得到查询的参数
	tableInit.queryParams = function (params) {
		var temp = { //这里的键的名字和控制器的变量名必须一致
			pageSize: params.limit, //每页条数
			pageIndex: params.offset/params.limit+1, //页码
			searchText: params.search
		};
		return temp;
	};
	return tableInit;
};

//表格（不分页）
var xx_table_no_page = function () {
	var tableInit = new Object();
	//初始化Table
	tableInit.Init = function (tableName, queryUrl, columns, detailView, objId, searchTips) {
		$('#'+tableName).bootstrapTable({
			url: queryUrl, //请求后台的URL（*）
			method: 'get', //请求方式（*）
			dataType: "json", 
			toolbar: '#toolbar', //工具按钮用哪个容器
			striped: false, //是否显示行间隔色
			cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination: true, //是否显示分页（*）
			sortable: true, //是否启用排序
			sortOrder: "asc", //排序方式
			queryParams: tableInit.queryParams,//传递参数（*）
			sidePagination: "server", //分页方式：client客户端分页，server服务端分页（*）
			pageNumber:1, //初始化加载第一页，默认第一页
			pageSize: 10, //每页的记录行数（*）
			pageList: [10, 15, 20, 25, 30], //可供选择的每页的行数（*）
			search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch: true,
			showColumns: true, //是否显示所有的列
			showRefresh: true, //是否显示刷新按钮
			minimumCountColumns: 2, //最少允许的列数
			clickToSelect: true, //是否启用点击选中行
			height: 530, //行高，如果没有设置height属性，表格自动根据记录条数决定表格高度
			uniqueId: objId, //每一行的唯一标识，一般为主键列
			showToggle:false, //是否显示详细视图和列表视图的切换按钮
			cardView: false, //是否显示详细视图
			detailView: detailView, //是否显示父子表
			showExport: true, 
			exportDataType: "basic",
			//注册加载子表的事件。注意下这里的三个参数！
			onExpandRow: function (index, row, $detail) {
				tableInit.InitSubTable(index, row, $detail);
			},
			//无数据显示
			formatNoMatches: function() {
				return '暂无数据！';
			},
			//搜索框提示
			formatSearch: function() {
				return searchTips;
			},
			//处理返回结果
			responseHandler: function(response){
				console.log( response.result);
				return { rows: response.result.results, total: response.result.total }
			},
			columns: columns
		});
	};
	
	tableInit.InitSubTable = function (index, row, $detail) {
		var parentId = row.id;
		var cur_table = $detail.html('<table></table>').find('table');
		$(cur_table).bootstrapTable({
			url: 'query.html',
			method: 'get', //请求方式（*）
			dataType: "json", 
			striped: false, //是否显示行间隔色
			cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination: false, //是否显示分页（*）
			sortable: true, //是否启用排序
			sortOrder: "asc", //排序方式
			queryParams: {parentId : parentId },//传递参数（*）
			sidePagination: "server", //分页方式：client客户端分页，server服务端分页（*）
			strictSearch: true,
			minimumCountColumns: 2, //最少允许的列数
			clickToSelect: true, //是否启用点击选中行
			uniqueId: "id", //每一行的唯一标识，一般为主键列
			showToggle:false, //是否显示详细视图和列表视图的切换按钮
			cardView: false, //是否显示详细视图
			detailView: true, //是否显示父子表
			columns: [{
				checkbox: true
			}, {
				field: 'resourcesName',
				title: '二级资源名称'
			}, {
				field: 'resourcesPath',
				title: '资源路径'
			}, {
				field: 'parentID',
				title: '上级资源'
			}],
			//无线循环取子表，直到子表里面没有记录
			onExpandRow: function (index, row, $Subdetail) {
				tableInit.InitSubTable(index, row, $Subdetail);
			},
			//处理返回结果
			responseHandler: function(response){
				return { rows: response.result.results, total: response.result.total }
			},
		});
	};
	
	//得到查询的参数
	tableInit.queryParams = function (params) {
		var temp = {
			pageSize: params.limit, //每页条数
			pageIndex: params.offset/params.limit+1, //页码
			searchText: params.search
		};
		return temp;
	};
	return tableInit;
};

//表格工具栏
var xx_button = function () {
	var buttonInit = new Object();
	//初始化页面上面的按钮事件
	buttonInit.Init = function (tableName) {
		//新增事件
		$("#btn_add").on("click", function(){
			//清空模态框
			xx_modal_clear("#modal-info");
			//获取选中行
			var objArr = $("#"+tableName).bootstrapTable("getSelections", null);
			xx_add(objArr);
		});
		
		//修改事件
		$("#btn_edit").on("click", function(){
			/*xx_modal_disable("#modal-info");*/
			//获取选中行
			var objArr = $("#"+tableName).bootstrapTable("getSelections", null);
			if(objArr.length == 0){
				xx_alert("info", "请选择要修改的数据！");
			}else if(objArr.length == 1){
				//清空模态框
				xx_modal_clear("#modal-info");
				//打开模态框
				xx_modal_open("#modal-info");
				//获取数据ID
				var id = objArr[0].id;
				xx_edit(id);
			}else{
				xx_alert("info", "只能选择一条数据！");
			}
		});
		
		//保存事件
		$("#btn_save").on("click", function(){
			xx_save(tableName);
		});
		
		//删除事件
		$("#btn_delete").on("click", function(){
			//获取选中行
			var objArr = $("#"+tableName).bootstrapTable("getSelections", null);
			if(objArr.length == 0){
				xx_alert("info", "请选择要删除的数据！");
			}else{
				//拼接ID
				var ids = "";
				$.each(objArr, function(index, item){
					if (0 == index) {
						ids = item.id;
					} else {
						ids += (","+item.id);
					}
				});
				
				//确认删除
				xx_alert_confirm("确认删除"+ objArr.length +"条信息?", function(){
					//ajax请求
					xx_ajax("delete.html", "get" , {ids:ids}, "json", "#toolbar", function(response){
						xx_alert("success", "共删除了"+ response.delNum +"条数据！");
						//刷新表格数据
						$("#"+tableName).bootstrapTable("refresh", null);
					});
				});
			}
		});
	};
	return buttonInit;
};

